Skip to content

ci: manage toolchains with mise - #11

Merged
sou1118 merged 1 commit into
mainfrom
ci/mise-toolchain
Aug 4, 2026
Merged

ci: manage toolchains with mise#11
sou1118 merged 1 commit into
mainfrom
ci/mise-toolchain

Conversation

@sou1118

@sou1118 sou1118 commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Summary

Manage toolchain dependencies with mise across CI and release workflows, making mise.toml the single source of truth for tool versions in both local development and CI.

Changes

  • mise.toml: Pin rust = 1.97.1 (with rustfmt/clippy components) and typst = 0.15.1 (previously latest, now pinned for reproducibility).
  • ci.yml: Replace dtolnay/rust-toolchain and typst-community/setup-typst with jdx/mise-action (SHA-pinned, v4.2.4). Lint/test jobs install only rust via install_args; the compile-test job runs a full install to also get typst. The matrix components field is gone since components now live in mise.toml.
  • release.yml: Replace dtolnay/rust-toolchain with jdx/mise-action in all three jobs. Cross-compilation targets are added with an explicit rustup target add step for non-cross builds — mise's rust backend reuses the standard rustup installation and sets RUSTUP_TOOLCHAIN, so the target lands on the pinned toolchain.
  • Swatinem/rust-cache stays as is: it handles cargo registry/target caching, which mise does not cover.

Verification

  • cargo fmt --check, cargo clippy -- -D warnings, and cargo test (60 tests) all pass locally under the mise-managed 1.97.1 toolchain.
  • Generated fixture diffs compile with typst 0.15.1.
  • Both workflows pass actionlint.

Note: release.yml only runs on tag pushes, so it is worth a manual workflow_dispatch run after merge to confirm the Windows/macOS runners.

Summary by CodeRabbit

  • Chores
    • Updated development and release workflows to use consistent, pinned Rust and Typst tool versions.
    • Improved build configuration for cross-compilation and automated publishing.
    • Maintained caching for linting and test jobs to support efficient validation.

Replace dtolnay/rust-toolchain and typst-community/setup-typst with
jdx/mise-action so tool versions are managed in mise.toml as a single
source of truth for local development and CI.

- Pin rust 1.97.1 (with rustfmt/clippy components) and typst 0.15.1
- Install only rust via install_args for jobs that do not need typst
- Add rustup target add step for non-cross release builds
- Keep Swatinem/rust-cache since it handles cargo caching, not toolchains
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Changes

Toolchain migration

Layer / File(s) Summary
Pinned tool versions
mise.toml
Rust is pinned to version 1.97.1 with rustfmt and clippy. Typst is pinned to version 0.15.1.
CI and release workflow integration
.github/workflows/ci.yml, .github/workflows/release.yml
CI and release jobs use jdx/mise-action for Rust setup. Non-cross builds add the matrix target with rustup.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: managing CI toolchains with mise.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/mise-toolchain

Comment @coderabbitai help to get the list of available commands.

@sou1118
sou1118 merged commit 8fd6e95 into main Aug 4, 2026
7 of 8 checks passed
@sou1118
sou1118 deleted the ci/mise-toolchain branch August 4, 2026 16:09

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.github/workflows/ci.yml (1)

39-41: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Pin the mise binary at every action call.

jdx/mise-action uses the latest mise release when version is omitted, so the SHA pin on the action does not pin the manager. (raw.githubusercontent.com)

  • .github/workflows/ci.yml#L39-L41: add the approved mise version.
  • .github/workflows/ci.yml#L52-L52: add the approved mise version.
  • .github/workflows/release.yml#L41-L43: add the approved mise version.
  • .github/workflows/release.yml#L101-L103: add the approved mise version.
Proposed action input
       - uses: jdx/mise-action@7e36c90d9ab29c415a2384db3006f3ec8a8cc654 # v4.2.4
         with:
+          version: <approved-mise-version>
           install_args: rust
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 39 - 41, The jdx/mise-action in
.github/workflows/ci.yml lines 39-41 and lines 52-52, and in
.github/workflows/release.yml lines 41-43 and lines 101-103 must each include a
version input parameter to pin the mise binary manager version. Currently the
action SHA pins only the action code itself, not the manager binary that gets
installed. Add the approved mise version value to the with block of each
jdx/mise-action call across all four locations to ensure the manager binary
version is pinned consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In @.github/workflows/ci.yml:
- Around line 39-41: The jdx/mise-action in .github/workflows/ci.yml lines 39-41
and lines 52-52, and in .github/workflows/release.yml lines 41-43 and lines
101-103 must each include a version input parameter to pin the mise binary
manager version. Currently the action SHA pins only the action code itself, not
the manager binary that gets installed. Add the approved mise version value to
the with block of each jdx/mise-action call across all four locations to ensure
the manager binary version is pinned consistently.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 38ff2934-1c35-4a55-bb5c-7d9c6a340eeb

📥 Commits

Reviewing files that changed from the base of the PR and between 979742c and f37af29.

📒 Files selected for processing (3)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • mise.toml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant